package com.cy.dao;

import com.cy.pojo.Student;
import com.cy.vo.QueryParam;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * Created with IDEA2020.3.3 JDK1.8 Mysql 5.7 maven3.6.3
 *
 * @Auther: 张鹏宇
 * @Date: 2021/04/12/15:55
 * @Description:
 */
public interface StudentDao {
    /**
     * @param id
     * @return com.cy.pojo.Student
     * @date 2021/4/20 9:57
     * @Description: 根绝id查询用户信息
     */
    public Student selectStudentById (Integer id);
    List<Student> selectStudentBy$ (Integer id);

    /**
     * @param name
     * @param age
     * @return java.util.List<com.cy.pojo.Student>
     * @date 2021/4/20 16:42
     * @Description: 多个参数:命名参数,在形参定义的前面加上@param("自定义参数名")
     */
    List<Student> selectMulitParam (@Param ("myname") String name, @Param ("myage") Integer age);

    /**
     * @param queryParam 封装的VO实体类
     * @return java.util.List<com.cy.pojo.Student>
     * @date 2021/4/20 16:42
     * @Description: 多个参数利用VO 实体类进行封装
     */
    List<Student> selectMulitObject(QueryParam queryParam);

    /**
     * @param student 封装的POJO 实体类
     * @return java.util.List<com.cy.pojo.Student>
     * @date 2021/4/20 16:42
     * @Description: 多个参数利用POJO  实体类进行封装
     */
    List<Student> selectMulitStudent(Student student);

    /**
     * @param name
     * @param age
     * @return java.util.List<com.cy.pojo.Student>
     * @Description: 多个参数---简单类型  按位置传值
     * mybatis 3.4 之前  使用#{0}  , #{1}
     * mybatis 3.4 之后  使用#{arg0}  , #{arg1}
     */
    List<Student> selectMultiPosition(String name, Integer age);


    /**
     * @return java.util.List<com.cy.pojo.Student>
     * @Author ZPY
     * @Date 20:17 2021/6/7
     * @Description: //TODO 使用map传值
     * @Param [map]
     */
    List<Student> selectMultiMap (Map map);


    List<Student> selectUser$Order (@Param ("colName") String colName);


}
